package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Envase;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 */

public class EnvaseDAO extends GenericSAPDAO{

    //Atributos    
    private List<Envase> misEnvases;

    //Constructores
    public EnvaseDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("I_ENVASE");
        super.setMyTable(aFunction);
        this.misEnvases=new ArrayList();
    }

    //Getters & Setters
    public List<Envase> getMisEnvases() {
        return misEnvases;
    }

    //Metodos Privados
    /**
     * Agrega un "envase" a la coleccion "misEnvases".
     * @param elEnvase
     */
    private void addUnEnvase(Envase elEnvase) {
        this.misEnvases.add(elEnvase);
    }

    
    /**
     *  Columnas de Envases
     * ZESPECIE	ZZESPECIE		CHAR	4	0	Especie de frutas
     * ZENVASE	ZZENVASE		CHAR	6	0	Envase de frutas.
     * ZDENOMINAC	ZDENOMINAC              CHAR	30	0	Denominación
     * ZTEXTO	ZDENOMINAC              CHAR	30	0	Denominación
     * ZBULTXPALL	ZBLTXPALL		NUMC	5               Bultos por pallet
     * ZTIPOENVA	ZZTIPOENVA              CHAR	1	0	Tipo de envase 
     */
    
    //Metodos publicos
    /**
     * Recorre "miTabla" de la RFC y por cada registro crea un "envase" y lo agrega a "misEnvases".
     */
    @Override
    public void findAll() throws SapGeneralException {
        Envase envase;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                envase=new Envase(super.getMyTable().getString("ZESPECIE"),super.getMyTable().getString("ZENVASE"),super.getMyTable().getString("ZDENOMINAC"),super.getMyTable().getString("ZTEXTO"),super.getMyTable().getChar("ZTIPOENVA"));
                addUnEnvase(envase);            
            }   
        
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
        }
        
    }

    /**
     * Solo Para las Pruebas.
     * Imprime todos los registros de "miTabla".
     */
    @Override
    public void printAll() {
         System.out.println("ZESPECIE"+'\t'+"ZENVASE"+'\t'+"ZDENOMINAC"+'\t'+"ZTEXTO"+'\t'+"ZBULTXPALL"+'\t'+"ZTIPOENVA");
         for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ZESPECIE") +
            '\t' + super.getMyTable().getString("ZENVASE") + 
            '\t' + super.getMyTable().getString("ZDENOMINAC") +
            '\t' + super.getMyTable().getString("ZTEXTO") + 
            '\t' + super.getMyTable().getString("ZBULTXPALL") + 
            '\t' + super.getMyTable().getString("ZTIPOENVA"));                
         }
    }

}
